Traditional software applications often utilize one or more databases to provide a number of functions and services for corresponding software applications. A given database can be made consistent across all aspects of its corresponding software application, and such applications can be scaled horizontally by providing application instances on a number of platforms (e.g., running instances on a plurality of servers, using a load-balancer).
Microservice architectures take an approach in which application functions and services are deployed in a much more granular fashion using microservices, and larger application goals are reached using interactions between such microservices. For example, each of a number of microservices might provide a particular function or service, and each such microservice might interact with (e.g., input from, or output to) at least one other microservice.
In practice, interfaces between microservices are typically maintained in a consistent, predictable fashion. Accordingly, it should be straightforward for one microservice to interact with another microservice, even if the microservices have not previously interacted. Nonetheless, as long as such interface consistency is maintained, it is possible for each microservice to be developed and updated in a manner that is otherwise independent from other microservices. For example, data formatting used by a particular microservice might be updated without notifying other microservices.